#ifndef __AUDIO_APE__
#define __AUDIO_APE__

#include "main.h"

#include "apedecoder.h"
#include "parser.h"

//////////////////////////////////////////////////////////////////////////////////	 
//本程序移植自RockBox的ape解码库
//ALIENTEK STM32F407开发板
//APE 解码代码	   
//正点原子@ALIENTEK
//技术论坛:www.openedv.com
//创建日期:2014/6/29
//版本：V1.0
//********************************************************************************
//V1.0 说明
//1,支持16位单声道/立体声ape的解码
//2,最高支持96K的APE格式(LV1流畅,LV2小卡)
//3,LV1~LV3,在48K及以下流畅播放,LV4,LV5大卡.
//4,对某些ape文件,可能不支持,请用Monkey's Audio软件进行转换一下,即可正常播放
////////////////////////////////////////////////////////////////////////////////// 	 
 
#define APE_FILE_BUF_SZ    			20*1024		// APE解码时,文件buf大小
#define APE_BLOCKS_PER_LOOP			2*1024		// APE解码时,每个循环解码block的个数

//取2个值里面的较小值.
#ifndef AUDIO_MIN			
#define AUDIO_MIN(x,y)	((x)<(y)? (x):(y))
#endif


//APE控制结构体
typedef __packed struct 
{ 
    uint32_t totsec ;				//整首歌时长,单位:秒
    uint32_t cursec ;				//当前播放时长
	
    uint32_t bitrate;	   			//比特率
	uint32_t samplerate;			//采样率
	uint16_t outsamples;			//PCM输出数据量大小
	uint16_t bps;					//位数,比如16bit,24bit,32bit
	
	uint32_t datastart;				//数据帧开始的位置(在文件里面的偏移)
}__apectrl;

int Ape_Play(char *fname);

void process_ape_buffer(void);

#endif


